﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL.Entity;

namespace DAL.Persistencia
{
    public class TarifCategoriaDAL
    {

        public List<Tarif_Categoria> ListarTodos()
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    return Con.Tarif_Categoria.ToList();
                }
            }
            catch
            {
                throw;
            }
        }

        public List<Tarif_Categoria> ListarTodos(string nome)
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    return Con.Tarif_Categoria.Where(t => t.Tarif_categoria_nome.Contains(nome)).OrderBy(o => o.Tarif_categoria_nome).ToList();
                }
            }
            catch
            {
                throw;
            }
        }

        public bool VerificaExistente(string nome)
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    return Con.Tarif_Categoria.Where(t => t.Tarif_categoria_nome.Equals(nome)).Count() != 0;
                }
            }
            catch
            {
                throw;
            }
        }

        public Tarif_Categoria ObterPorNome(string nome)
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    return Con.Tarif_Categoria.Where(t => t.Tarif_categoria_nome.Equals(nome)).Single();
                }
            }
            catch
            {
                throw;
            }
        } 

        public object ListarTodosJaCadastrados(int IdPeriodo)
        {
            try
            {

                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    var query = (from tc in Con.Tarif_Categoria
                                 join mt in Con.S_Mercado_Tarifa on tc.Tarif_categoria_id equals mt.Tarif_categoria_id
                                 where mt.S_merc_periodo_id == IdPeriodo
                                 select new
                                 {
                                     tc.Tarif_categoria_nome,
                                     tc.Tarif_categoria_id

                                 }).Distinct().ToList();

                    return query;
                }

            }
            catch
            {
                throw;
            }
        }

        public void Salvar(Tarif_Categoria c)
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    Con.AddToTarif_Categoria(c);
                    Con.SaveChanges();
                }
            }
            catch
            {
                throw;
            }
        }

    }
}
